Video displays are used to provide a text and graphics interface for a computer user. In a typical high resolution graphics display system, the display image is held in a memory buffer in the form of a bit map, where each picture element (pixel) is defined by one or more bits. In operation, data is read from the buffer in synchronization with the raster scan of the display and converted to serial form to produce a video signal for driving the display.
Such display systems normally have a pointing device, for example a mouse or joystick, for pointing to areas on the display. The physical movements of the pointing device are translated into X-Y coordinates defining the position of a graphical cursor within the display image. The cursor allows the user to interact with the graphical interface. The cursor may be used, for example, to select menus in a windows environment, or to select a particular application to be run. The cursor may appear on the screen simply as a pair of crosshatched lines, or it may be represented by a more complex icon such as an arrow. The point on the cursor image used for selecting items is known as the hot point. For the crosshatched cursor, the hot point is located at the center of the cursor image. For an arrow cursor, the hot point is located at the point on the cursor image representing the arrow tip. For example, for a left pointing arrow, the hot point is located at the upper left corner of the cursor image.
The cursor may be controlled entirely by the computer system software, wherein the cursor positioning software is responsible for replacing data in the video buffer at the appropriate locations with the data representing the cursor and for updating the contents of the video buffer as the cursor is moved.
Alternatively, the cursor may be partially controlled by supporting hardware. In such implementations, the cursor is typically stored as a bit map image in a high speed static memory, for example as a 64.times.64 pixel matrix. Software loads position registers in the hardware with cursor position data which defines the cursor position relative to the top left pixel of the display. The position of the cursor is referenced to its hardware origin, usually the top left pixel of the cursor pixel matrix. The cursor data is read out of the high speed memory, serialized, and aligned and combined with the serialized image display data to produce an output video signal representing the image with the cursor superimposed at the required position. Video buffer updates for each movement of the pointing device are thus avoided, and performance is accordingly enhanced.
However, available hardware cursor implementations restrict the positioning of the cursor relative to the image display, which results in increased software overhead and management for systems supporting windowing environments such as X-Windows.RTM. and MS-Windows.RTM..
One problem results from the manner in which present hardware cursor implementations reference cursor positions on the display. The displayed image consists of an active interval, in which the pixels are displayed, surrounded by a blanking interval, which appears as a black area surrounding the active interval. Present hardware cursor implementations define the origin of the display as the top left pixel position, which occurs at the start of the active region for the display. The hardware origin of the cursor bitmap may be defined, for example, as the top left corner of the cursor bitmap. In such an implementation, the hardware origin of the cursor cannot be moved beyond the top or left edge of the active interval. Thus, if the cursor image is for example a right pointing arrow with a hot point in the upper right corner of the pixel matrix, the upper left pixels of the display cannot be selected. Windowing environments require that in such a case, the cursor image should overlap the edge of the active interval so that the cursor is partially displayed, and the hot point of the cursor can be used to select pixels at the edge of the active interval.
Some hardware cursor implementations provide support for a partially displayed cursor by redefining the origin of the display within the blanking interval, rather than at the start of the active interval. Such implementations thus require software to add an offset value representing the blanking interval to the cursor position data. For systems supporting multiple display types with different blanking interval times, the software addition of blanking offset values results in increased software overhead and management. In addition, when the video pipeline hardware is subject to a design change, thus changing the blanking interval timing, software modifications are required.
Other hardware cursor implementations leave the origin of the display at the start of the active interval, but provide X-Y offset registers to support partial display of the cursor. According to one such implementation, the hardware origin of the cursor is defined as the upper right pixel of the pixel matrix. The values in X-Y the offset registers are subtracted from the upper right corner position of the cursor matrix, thus shifting the origin of the cursor matrix relative to the origin of the image display. Such implementations are disadvantageous in that they require software to keep track of the position of the cursor relative to the edges of the screen, and continuously update the offset registers accordingly. Increased software overhead results.
A further complication results for windowing environments that require the support of multiple cursor icons or fonts. Typical hardware cursor implementations implement the cursor as a bit map, for example as a 64.times.64 pixel matrix, which is overlayed onto the image data relative to the cursor hardware origin, typically defined as the upper left corner of the pixel matrix. However, windowing software positions a cursor icon by its hot point. Some of the cursor icons used by the windowing software may have hot points effective at a location other than the hardware origin of the cursor bit map, for example the upper right corner or the center. The difference between the hot point of the cursor and the origin of the hardware cursor is here referred to as the match position. In cases where the hot point is not located at the origin of the hardware cursor, software must scale the difference between the match position and the hardware cursor origin for proper operation of the windowing software. Again, increased software overhead and management result s, particularly where the match position changes for different displayed windows.